package com.yuzhi.master.drainRRmst.service;

import com.yuzhi.common.core.page.PageDataInfo;
import com.yuzhi.master.drainRRmst.domain.bo.DrainRRmstBo;
import com.yuzhi.master.drainRRmst.domain.request.DrainRRmstReq;
import com.yuzhi.master.drainRRmst.domain.vo.DrainRRmstVo;
import com.yuzhi.master.sewage.wmst.domain.DrainStatistics;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public interface IDrainRRmstService {

    DrainRRmstVo queryById(String id);

    PageDataInfo<DrainRRmstVo> queryPageList(DrainRRmstReq request);

    List<DrainRRmstVo> queryList(DrainRRmstReq request);

    Boolean insertByBo(DrainRRmstBo bo);

    Boolean updateByBo(DrainRRmstBo bo);

    Boolean deleteById(String id, Boolean isValid);

    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);

    DrainStatistics getSttpCount();

    boolean insertFacilitylog(String deviceId, String msg);

    /**
     * 根据stcd查询测站信息
     * 
     * @param stcd 测站代码
     * @return 测站信息
     */
    DrainRRmstVo selectDrainRRmstByStcd(String stcd);

    /**
     * 根据经纬度查询最近的雨量站
     * 
     * @param longitude 经度
     * @param latitude 纬度
     * @return 最近的雨量站信息
     */
    DrainRRmstVo findNearestRainfallStation(BigDecimal longitude, BigDecimal latitude);

    /**
     * 根据干管列表查询关联的测站名称
     * 1) 调用干管服务查询干管列表
     * 2) 通过关联服务根据 trunkmainId 查询 stcd
     * 3) 用 stcd 查询测站名称
     * 返回 trunkmainId、trunkmainName、stcd、stnm
     */
    List<Map<String, Object>> trunkMainStationNames();

}